﻿#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", *(arr + i));//这里就使用了指针+整数
//		printf("%d ",arr[i]);//和上面那一行打印的相同
//		printf("\n");
//	}
//	return 0;
//}

////指针-指针
//#include <stdio.h>
//int my_strlen(char* s)//模拟实现库函数，计算字符串'\0'之前的字符数
//{
//	char* p = s;
//	while (*p != '\0')
//		p++;
//	return p - s;
//}
//int main()
//{
//	printf("%d\n", my_strlen("abc"));
//	return 0;
//}

////指针的关系运算
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	while (p < arr + sz) //指针的⼤⼩⽐较
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int* p;//局部变量未初始化，默认为随机值
//	printf("%d ", *p);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	for (int i = 0; i < 11; i++)
//	{
//		printf("%d ", *(arr + i));//这里就是越界访问，最后一个数字是随机值
//	}
//	return 0;
//}

//#include <stdio.h>
//int* test()
//{
//	int n = 100;
//	return &n;
//}
//int main()
//{
//	int* p = test();
//	printf("%d\n", NULL);
//	return 0;
//}
// 
//#include <stdio.h>
//int main()
//{
//	int num = 10;
//	int* p1 = &num;
//	int* p2 = NULL;
//	return 0;
//}
// 
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		*(p++) = i;
//	}
//	//此时p已经越界了，可以把p置为NULL
//	p = NULL;
//	//下次使、的时候，判断p不为NULL的时候再使、
//	//...
//	p = &arr[0];//重新让p获得地址
//	if (p != NULL) //判断
//	{
//		//...
//	}
//	return 0;
//}